//83. 删除排序链表中的重复元素
//思路：因为这里是排序链表，所以时间复杂度O(N)就可以解决
//1. 分情况讨论，当 head == NULL 的时候，我们直接返回 NULL
//2. 当头结点存在时，我们就遍历一次就可以解决
//当cur->val == cur->next->val，我们直接将cur->next = cur->next->next
//否则就让 cur 往后走
//注意：我们这里不可以用cur做循环判断条件，当cur走到链表尾的时候，我们循环里面有一句cur->next->val
//这一句就会导致空指针异常

#include <stdlib.h>

struct ListNode {
    int val;
    struct ListNode* next;
};
struct ListNode* deleteDuplicates(struct ListNode* head) {
    if (!head)
        return NULL;

    struct ListNode* cur = head;
    while (cur->next)
    {
        if (cur->val == cur->next->val)
            cur->next = cur->next->next;
        else
            cur = cur->next;
    }
    return head;
}